1
Параллелизм на Красной планете
AI017Lesson 8
00:00

Параллелизм на Красной планете — это искусство управления несколькими независимыми операциями — например, навигацией ровера, передачей данных о жизнедеятельности и связью со спутниками — без остановки системы. В языке Go независимо выполняющаяся задача называется независимо выполняющаяся задача называется горутина.

1. Принцип непредсказуемости

Лучше всегда считать, что операции в разных горутинах могут выполняться в любом порядке. Поскольку среда выполнения Go распределяет задачи между доступными ядрами, мы не можем полагаться на то, что один ровер завершит сканирование до того, как другой начнёт передачу, без явной синхронизации.

go printGopher(c) // Запускает новую независимую задачу

2. Механизмы синхронизации

Для управления этими задачами язык Go предоставляет два основных инструмента:

  • Взаимное исключение: Горутины могут использовать муьтекс чтобы исключить друг друга от одновременного выполнения чего-либо.
  • Оператор выбора: Это выглядит как оператор switch, где каждый случай содержит получение или отправку данных через канал. select ожидает, пока один из случаев станет готовым, а затем выполняет его.
Менеджер гофера(Каска и блокнот)ВЫБОРРовер АльфаРовер Бета

3. Шаблон рабочего процесса

Долгоживущие рабочие процессы обычно используют бесконечный цикл вместе с select для одновременного мониторинга нескольких каналов связи:

func worker() {
for {
select {
// Ожидание каналов здесь.
}
}
}
main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>